Next:
type trait
, Previous:
E) noexcept
, Up:
Index
E) clone function
clone 함수
객체 자기자신의 내용을 복제해서 포인터를 넘겨줄 때, 사용되는 함수이다.
class
Test
{
private
:
// ...
public
:
// ...
Test
*
Clone
(
)
const
{
return
new
Test
(
*
this
)
;
}
}
member 변수 중, 동적 할당을 받은 메모리 주소를 가지고 있는 경우
두번 참조가 발생하게 된다(deep copy 되지 않음)
소멸자에서 delete를 호출할 경우, 두번 메모리 해제가 요청되어 에러가 발생될 수 있음
class
Test
{
private
:
int
*
pvalue
;
//
동
적
할
당
메
모
리
포
인
터
public
:
Test
(
)
{
}
~
Test
(
)
{
if
(
pvalue
)
delete
[
]
pvalue
;
}
Test
*
Clone
(
)
;
void
Assign
(
int
t
)
{
pvalue
=
new
int
[
t
]
;
}
}